/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle.estatistica;

/**
 *
 * @author tytu
 */
import controle.MbLogin;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import modelo.Curso;
import modelo.Docente;
import modelo.Turma;
import org.primefaces.event.ItemSelectEvent;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import persistencia.CursoFacade;
import persistencia.DocenteFacade;

@ManagedBean
@SessionScoped
public class Professor_Geral_Ano implements Serializable {

    private CartesianChartModel categoryModel; // a bagaça q imprime na tela
    private Curso curso;
    private List<Curso> lista;
    private MbLogin login = (MbLogin) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("mbLogin");
    private Docente docente; //quem ta logado na parada
    @EJB
    private CursoFacade ejbCursoFacade;

    @PostConstruct
    public void init() {
        lista = ejbCursoFacade.findAll();
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public List<Curso> getLista() {
        return lista;
    }

    public void setLista(List<Curso> lista) {
        this.lista = lista;
    }

    public Docente getDocente() {
        return docente;
    }

    public void setDocente(Docente docente) {
        this.docente = docente;
    }

    public Professor_Geral_Ano() {
        //createCategoryModel();
        if (login != null) {

            docente = login.getLogin().getDocente();
        } else {
            System.out.println("erro");
        }
    }

    public CartesianChartModel getCategoryModel() {
        createCategoryModel();

        return categoryModel;
    }

    private void createCategoryModel() {
        categoryModel = new CartesianChartModel();
        int cont = 0;



        Set<Docente> docentes = new HashSet<>();



        for (Curso d : lista) {
            List<Turma> turmas = d.getTurmaList();
            if (turmas != null) {
                Date data = new Date(2012, 01, 01);
                for (Turma t : turmas) {
                    if (data.after(t.getTrmDtincaulas())) {
                        docentes.addAll(t.getDocenteList());
                    }
                }
            } else {
                System.out.println("turma null");
            }
        }
        System.out.println("Docentes= " + docentes.size());

        for (Docente d : docentes) {
            ChartSeries geral = new ChartSeries();
            geral.setLabel(d.getPssfscNome());
            geral.set("2004", 120);
            geral.set("2005", 100);
            geral.set("2006", 44);
            geral.set("2007", 150);
            geral.set("2008", 25);
            categoryModel.addSeries(geral);
            if (++cont > 2) {
                break;
            }
        }
        if (docente != null) {
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Login",
                    docente.getPssfscNome());
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

    }

    public void itemSelect(ItemSelectEvent event) {

        if (docente != null) {
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Login",
                    docente.getPssfscNome());
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }else{
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Login",
                    "null");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

//        for (Curso d : lista) {
//            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Curso",
//                    d.getCrsDesricao());
//            FacesContext.getCurrentInstance().addMessage(null, msg);
//        }

//        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Item selected",  
//                        "Item Index: " + event.getItemIndex() + ", Series Index:" + event.getSeriesIndex());  
//  
//        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }
}
